package com.dev.jwt.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 跨域拦截器类，用于处理跨域请求。
 * 实现HandlerInterceptor接口，提供预处理请求的能力。
 */
public class CrossInterceptorHandler implements HandlerInterceptor {
    /**
     * 在请求处理之前进行预处理。
     * 主要用于设置响应头，以允许来自特定源的跨域请求。
     *
     * @param request  HttpServletRequest对象，代表客户端的请求。
     * @param response HttpServletResponse对象，用于向客户端发送响应。
     * @param handler  将要处理请求的具体处理器对象。
     * @return 返回true表示继续处理请求，返回false表示中断请求处理。
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        // 设置响应头，允许来自https://example.com的跨域请求
        response.setHeader("Access-Control-Allow-Origin", "https://example.com");
        // 允许浏览器发送cookie
        response.setHeader("Access-Control-Allow-Credentials", "true");
        // 允许的HTTP方法
        response.setHeader("Access-Control-Allow-Methods", "POST, GET , PUT , OPTIONS");
        // 预检请求的缓存时间
        response.setHeader("Access-Control-Max-Age", "3600");
        // 允许的请求头
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,accept,authorization,content-type");
        // 返回true，表示继续后续的处理流程
        return true;
    }
}
